String StringBuffer StringBuilder区别
Introduction
如题,本文将要介绍String
、StringBuffer
以及StringBuilder
的区别。首先要申明的是,他们的区别不大。
String
String是一个不变对象(immutable[一旦创建不可以改变])
创建的String对象被保存在常量池中(Constant String Pool)
像String这样的不可变对象都是现成安全的
1 | String demo = " hello " ; |
StringBuffer
StringBuffer是可变的意思是:可以改变该对象的值。
StringBuffer对象呗保存在堆中(heap)
每个StringBuffer的方法都是synchronized
StringBuffer是线程安全的
1 | StringBuffer demo1 = new StringBuffer("Hello") ; |
StringBuilder
StringBuilder基本和StringBuffer相同。主要区别就是StringBuilder是不是线程安全的;正由于他不是是线程安全的,所以速度要比StringBuffer要快。
总结
String | StringBuffer | StringBuilder | |
---|---|---|---|
存储区域 | 常量池 | 堆 | 堆 |
是否可修改 | 不可修改 | 可修改 | 可修改 |
线程安全 | 安全 | 安全 | 不安全 |
表现 | 快 | 慢 | 快 |
参考链接
原文见链接http://javahungry.blogspot.com/2013/06/difference-between-string-stringbuilder.html